/*!
\file AlgorithmInterface.h
\brief Contains declaration of AlgorithmInterface.
\ingroup Algorithm
*/

#ifndef ALGORITHMINTERFACE_H
#define ALGORITHMINTERFACE_H

#include<QtGui>
#include<QString>
#include"Algorithm.h"

/*!
\class AlgorithmInterface
\brief Interface to create a plugin.
\ingroup Algorithm
*/
class AlgorithmInterface{
public:
	virtual ~AlgorithmInterface(){}
	//!< Virtual destructor.
	
	virtual Algorithm *createAlgorithm( Graph *g ) = 0;
	//!< Plugin must create a new Algorithm and is given Graph g for its initialization.
	
	
	virtual QString name()const = 0;
	//!< Should return the name of the Algorithm in the plugin.
	
	virtual bool canAcceptGraph( Graph *g ) = 0;
	//!< Should contain a test wether or not this Algorithm will run properly on given Graph. At best, this can simply return true unconditionally.
};


Q_DECLARE_INTERFACE(AlgorithmInterface, "graafalgoritmes.algorithm")

#endif